package com.anolesoft.amljmes.fourteenDispatch.service.impl;

import cn.hutool.core.bean.BeanUtil;
import com.anolesoft.amljmes.fourteenDispatch.dto.MesProcessQlbzDO;
import com.anolesoft.amljmes.fourteenDispatch.dto.MesProcessQlbzDTO;
import com.anolesoft.amljmes.fourteenDispatch.service.info.MesProcessQlbzService;
import com.anolesoft.amljmes.fourteenDispatch.service.mapper.MesProcessQlbzMapper;
import com.anolesoft.yr.util.CommonUtils;
import com.anolesoft.yr.util.PageData;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

/**
 * @author zyq
 * @date 2022/8/25
 */
@Service
@Slf4j
public class MesProcessQlbzServiceImpl implements MesProcessQlbzService {
    @Autowired
    private MesProcessQlbzMapper mesProcessQlbzMapper;

    @Override
    public PageData<List<MesProcessQlbzDTO>> queryQlbz(MesProcessQlbzDTO mesProcessQlbzDTO, Integer pageNo, Integer pageSize) {
        Page<MesProcessQlbzDO> page = new Page<>(pageNo,pageSize);
        List<MesProcessQlbzDO> mesProcessQlbzDOList = this.mesProcessQlbzMapper.queryQlbz(MesProcessQlbzDO.builder()
                .partid(CommonUtils.stringNull(mesProcessQlbzDTO.getPartid()))
                .gongxuname(CommonUtils.stringNull(mesProcessQlbzDTO.getGongxuname()))
                .factoryId(CommonUtils.stringNull(mesProcessQlbzDTO.getFactoryId()))
                .build(),page);
        List<MesProcessQlbzDTO> mesProcessQlbzDTOList = mesProcessQlbzDOList.stream()
                .map(t -> BeanUtil.copyProperties(t, MesProcessQlbzDTO.class))
                .collect(Collectors.toList());
        return new PageData<>(((int) page.getTotal()), mesProcessQlbzDTOList);
    }

    @Override
    public String insertQlbz(MesProcessQlbzDTO mesProcessQlbzDTO) {
        int repeat = this.mesProcessQlbzMapper.repeatQjbz(MesProcessQlbzDO.builder()
                .partid(CommonUtils.stringNull(mesProcessQlbzDTO.getPartid()))
                .gongxuname(CommonUtils.stringNull(mesProcessQlbzDTO.getGongxuname()))
                .factoryId(CommonUtils.stringNull(mesProcessQlbzDTO.getFactoryId()))
                .build());
        if (repeat != 0) {
            return "repeat";
        }
        this.mesProcessQlbzMapper.insertQlbz(MesProcessQlbzDO.builder()
                .partid(CommonUtils.stringNull(mesProcessQlbzDTO.getPartid()))
                .gongxuid(CommonUtils.stringNull(mesProcessQlbzDTO.getGongxuid()))
                .gongxuname(CommonUtils.stringNull(mesProcessQlbzDTO.getGongxuname()))
                .qiliangtime(CommonUtils.stringNull(mesProcessQlbzDTO.getQiliangtime()))
                .createId(CommonUtils.stringNull(mesProcessQlbzDTO.getCreateId()))
                .factoryId(CommonUtils.stringNull(mesProcessQlbzDTO.getFactoryId()))
                .build());
        return "ok";
    }

    @Override
    public String updateQlbz(MesProcessQlbzDTO mesProcessQlbzDTO) {
        int repeat = this.mesProcessQlbzMapper.repeatQjbz(MesProcessQlbzDO.builder()
                .partid(CommonUtils.stringNull(mesProcessQlbzDTO.getPartid()))
                .gongxuname(CommonUtils.stringNull(mesProcessQlbzDTO.getGongxuname()))
                .factoryId(CommonUtils.stringNull(mesProcessQlbzDTO.getFactoryId()))
                .objuid(CommonUtils.stringNull(mesProcessQlbzDTO.getObjuid()))
                .build());
        if (repeat != 0) {
            return "repeat";
        }
        this.mesProcessQlbzMapper.updateQlbz(MesProcessQlbzDO.builder()
                .partid(CommonUtils.stringNull(mesProcessQlbzDTO.getPartid()))
                .gongxuid(CommonUtils.stringNull(mesProcessQlbzDTO.getGongxuid()))
                .gongxuname(CommonUtils.stringNull(mesProcessQlbzDTO.getGongxuname()))
                .qiliangtime(CommonUtils.stringNull(mesProcessQlbzDTO.getQiliangtime()))
                .modifyId(CommonUtils.stringNull(mesProcessQlbzDTO.getModifyId()))
                .objuid(CommonUtils.stringNull(mesProcessQlbzDTO.getObjuid()))
                .build());
        return "ok";
    }

    @Override
    public void deleteQlbz(MesProcessQlbzDTO mesProcessQlbzDTO) {
        this.mesProcessQlbzMapper.deleteQlbz(MesProcessQlbzDO.builder()
                .deleteId(CommonUtils.stringNull(mesProcessQlbzDTO.getModifyId()))
                .objuid(CommonUtils.stringNull(mesProcessQlbzDTO.getObjuid()))
                .build());
    }
}
